package com.wgy.day25.Set集合接口;
/*
java.util.Set 接口extends Collection接口
Set接口的特点:
      1.不允许存储重复的元素
      2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历

Set集合存储数据不重复的原理:
      set集合调用add方法会调用元素的hashCode方法和equals方法,判断元素是否重复
      1.先计算元素的哈希值,若元素对应的哈希值在集合中没有找到,就存储元素的哈希值到集合中,将元素存储到哈希值对应的链表下
      2.若元素对应的哈希值在集合中存在,则找到集合中对应哈希值的元素,再用equals方法比2个元素是否相同,
        相同就不存储元素,不同则把元素存储到集合中哈希值对应的链表下

Set集合存储数据不重复的前提:存储的元素必须重写hashCode方法和equals方法
Set接口常用实现类:TreeSet  HashSet   LinkedHashSet
      */

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Demo01Set {
    public static void main(String[] args) {
        Set<Integer> set=new HashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);
        set.add(1);
        System.out.println(set);  //[1, 2, 3] 不能存储重复的元素

        //遍历Set集合
       //使用 迭代器遍历
        Iterator<Integer> it = set.iterator();
        while (it.hasNext()){
            Integer n=it.next();
            System.out.println(n);
        }
        //使用增强for遍历Set集合
        for(Integer i:set){
            System.out.println(i);
        }

    }

}
